package demo01;

import java.io.FileNotFoundException;
import java.io.IOException;

/*
 *  如果父类抛出了多个异常，子类重写父类方法时，可以有以下选择：
 *      1. 抛出和父类相同的异常
 *      2. 抛出父类异常的子类异常
 *      3. 不抛出异常
 *  父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常，此时子类产生该异常，只能捕获处理，不能声明抛出
 */
public class Demo10Attetion3 {

}

abstract class Fu {
    public abstract void method1() throws IOException;

    public abstract void method2() throws IOException;

    public abstract void method3() throws IOException;

    public abstract void method4();
}

class Zi extends Fu {
    @Override
    public void method1() throws IOException { // 父类抛出异常，子类可以抛出和父类相同的异常
    }

    @Override
    public void method2() throws FileNotFoundException { // 父类抛出异常，子类可以抛出父类异常的子类异常
    }

    @Override
    public void method3() { // 父类抛出异常，子类可以不抛出异常
    }

    @Override
    public void method4() { // 父类未抛出异常，子类也不能声明抛出异常，出现异常只能捕获处理
        try {
            throw new FileNotFoundException("未找到文件异常");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
